#ifndef __MOUSE_H
#define __MOUSE_H

#include "common/types.h"
#include "hardwarecommunication/interrupts.h"
#include "driver/driver.h"
#include "hardwarecommunication/port.h"
#include "common/common.h"
class MouseEventHandler
{
private:
    /* data */
public:
    MouseEventHandler(/* args */);
    ~MouseEventHandler();
    virtual void OnMouseMove(int8_t x,int8_t y);
    virtual void OnMouseDown(uint8_t button);
    virtual void OnMouseUp(uint8_t button);
};







class MouseDriver : public InterruptHandler,public Driver{

    Port8Bit dataPort;
    Port8Bit commandPort;
    uint8_t buffer[3];
    uint8_t offset;
    uint8_t buttons;
    MouseEventHandler* handler;
    protected:

    public:

    MouseDriver(InterruptManager* interruptManager,MouseEventHandler* handler);
    ~MouseDriver();
    virtual uint32_t HandleInterrupt(uint32_t esp);
    virtual void Activate();
};


#endif